#ifndef __OLED_H__
#define __OLED_H__

#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/cdev.h>
#include <linux/slab.h>
#include <linux/device.h>
#include <linux/uaccess.h>
#include <linux/io.h>
#include <linux/ioport.h>
#include <linux/poll.h>
#include <linux/platform_device.h>
#include <linux/of.h>
#include <linux/of_gpio.h>
#include <linux/interrupt.h>
#include <linux/of_irq.h>
#include <linux/kthread.h>
#include <linux/delay.h>
#include <linux/input.h>
#include <linux/spi/spi.h>
#include <linux/vmalloc.h>
#include <linux/mm.h>
#include <linux/fb.h>
#include <linux/dma-mapping.h>

#define OLED_DISPLAY_RAM_SIZE	(8*128)

struct oled_handle{
	int rst_gpio;						//复位引脚
	int dc_gpio;						//数据命令选择引脚
	struct spi_device *spi;				//所属spi设备
	struct task_struct *kthread;		//用于更新显存的内核线程
	struct fb_info *fb;					//缓冲帧句柄
	unsigned int pseudo_palette[16];	//调色板
	uint8_t (*oled_buffer)[128];		//oled buffer
	uint8_t (*fb_buffer)[16];			//缓冲帧
	dma_addr_t phy_addr;				//缓冲帧物理地址
	uint8_t (*old_fb_buffer)[16];		//存储缓冲帧上一次状态
};

#endif
